package test.framework.config;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * 数据源动态选择器
 * @author: huwei
 * @date:   2019/12/30 16:52
 * @version:  1.0.0
*/
@Slf4j
@Aspect
@Order(-1)
@Component
public class DataSourceAop {
    /**
     * 服务拦截，并动态设置数据源
     */
    @Pointcut("execution(* test.module.user.service..*.*(..))")
    public void datasource1(){ }

    @Before("datasource1()")
    public void userBefore(){
        System.err.println("----> 切换数据源： datasource1" );
        DataSourceContextHolder.setDataSource("datasource1");
    }

    /**
     * 服务拦截，并动态设置数据源
     */
    @Pointcut("execution(* test.module.info.service..*.*(..))")
    public void datasource2(){ }

    @Before("datasource2()")
    public void infoBefore(){
        System.err.println("----> 切换数据源： datasource2" );
        DataSourceContextHolder.setDataSource("datasource2");
    }
}